部署 Kanzi 应用程序到 i.MX6/INTEGRITY

您可以在这里了解如何将您的 Kanzi 应用程序部署到运行 INTEGRITY 实时操作系统的 i.MX6 SABRE 平台。自 2.7.1 版以来,Kanzi 支持平台,而且经过测试,可以与运行 Debian GNU/Linux 6.0.7 版的 MULTI IDE 6.1.4 版配合使用。

Kanzi 可应要求提供将 Kanzi 应用程序部署到 i.MX6/INTEGRITY 所需的 i.MX6/INTEGRITY 库。请通过如下方式联系 Rightware 销售部 sales@rightware.com 了解更多信息。

前提条件

您需要先为 i.MX6 SABRE 准备一个有效的 INTEGRITY 开发环境,然后才能构建和部署 Kanzi 应用程序,包括:

有关如何建立 INTEGRITY 开发环境的信息,请参阅 Green Hills 软件提供的《i.MX6 SABRE Lite BSP 用户指南》。

除了有效的 INTEGRITY 开发环境以外,您还需要具备:

在开始将 Kanzi 应用程序部署到 i.MX6/INTEGRITY 之前,请确保您可以成功部署并运行 GPU 支持包随附的其中一个 OpenGL 示例。

请注意,这里的示例假定您的开发环境安装在 /opt/sdk/ghs/ 中,而且 TFTP 服务器从 /srv/tftp/ 目录提供文件。

准备内存卡

Kanzi 应用程序会读取从内存卡文件系统的 Kanzi Studio 中导出的资产和场景描述。内存卡可以是用于托管 U-Boot 引导程序的那个内存卡。准备一个 FAT 格式的内存卡,并确保能够轻松在您的台式机和目标主板之间交换内存卡。

Kanzi 应用程序开发准备

Kanzi 开发文件是以压缩存档的形式提供的。如果收到了以独立包形式提供的 i.MX6/INTEGRITY 支持文件,请将独立包的内容复制到 <KanziWorkspace>/Engine 中。

独立包中包含一个名为的 kzb_player 的最小示例工程,您可以将它用作模板来创建新的 Kanzi 应用程序。要将示例工程加载到 i.MX6 目标的适当默认工程中,请将如下文件添加到 openGL.gpj 中:

../kzb_player/configs/platforms/integrity-arm/kzb_player.gpj [INTEGRITY Application]

打开 kzb_player_as0.gpj 并编辑宏 KZ_ENGINE_DIR,以使其指向您的 Kanzi Engine 安装目录。例如:

macro KZ_ENGINE_DIR=/home/buildserver/workspace/v2_7/Kanzi/Engine

如果正确完成加载,工程会完成编译且不会出错。

特殊代码注意事项

当为 i.MX6/INTEGRITY 部署 Kanzi 应用程序时,请记住,您必须在 onConfigure() 之前调用以下 INTEGRITY 特定函数:

kzb_player 示例默认会调用这些函数。

编译和创建 U-Boot 映像

如果您是首次部署 Kanzi 应用程序或者您对程序代码进行了更改:

  1. 在 MULTI IDE 中,选择 kzb_player.gpj 并点击编译按钮(交叉的扳手和锤子),以编译应用程序和内核。
  2. 使用 gmemfile 准备映像。这样会产生一个名为 kzb_player.bin 的文件。
  3. 使用 mkimage 创建最终的 U-Boot 映像。这样会在 TFTP 服务器目录中产生一个名为 kzb_player.uimage 的文件。

您可以使用如下脚本完成最后两个步骤:

#!/bin/sh
/opt/sdk/ghs/comp_201314/gmemfile kzb_player && \
mkimage -A arm -O linux -C none -a 10800000 -n INTEGRITY -d kzb_player.bin /srv/tftp/kzb_player.uimage

如果您的目标设备支持压缩映像,则可以通过创建一个 zimage 来节省一些时间:

#!/bin/sh
/opt/sdk/ghs/comp_201314/gmemfile kzb_player && \
gzip -f kzb_player.bin && \
mkimage -A arm -O linux -C gzip -a 10800000 -n INTEGRITY -d kzb_player.bin.gz \
/srv/tftp/kzb_player.zimage

导出到内存卡

当在 Kanzi Studio 中更改您的 Kanzi 应用程序时,请将新的 kzb 二进制文件导出到内存卡。在部署 Kanzi 应用程序之前,内存卡中必须包含:

将内存卡连接到目标主板,然后再对目标主板通电。

部署您的 Kanzi 应用程序

您可以在 U-Boot 引导程序中执行以下命令,以部署和引导 U-boot 映像:

tftp 70000000 kzb_player.uimage
bootm 70000000

为了节省时间,您可以将这些要在通电时发出的命令存储到 U-Boot 环境中。确切的部署地址(在本例中为 0x70000000)取决于目标。请联系您的硬件供应商,以了解详细信息。

在内核引导期间,会查找以下重要日志消息:

日志消息 含义
USB..............................Success USB 子系统已初始化。Kanzi 使用 USB 来获得鼠标和键盘输入。
GALcore 4.6.9.1210 (Jul 31 2013).................Success 图形驱动程序已初始化。
VFS: Mounting SDCardDev:a on / with options: update,rw 显示 SD 卡的装载位置。显示的路径(在本例中为 /)必须与在应用程序启动期间指定给 kzsFileBaseSetResourceDirectory() 的路径相匹配。

启动调试器

引导了映像之后,要在 MULTI IDE 中使用 rtserv2 协议来附加调试器,请转到主菜单 (Main) > 连接 (Connect) > rtserv2
建立了连接之后,调试器窗口将打开。

选择 kzb_player_as0 下新创建的初始进程并点击绿色的箭头按钮,以启动应用程序。

在调试版本和发行版本之间进行切换

您可以设置在 kzb_player_as0.gpj 中使用调试版本还是发行版本:

切换版本之后,您必须重新编译和重新部署应用程序。

请注意,Kanzi 文档通过 libsystem、libcore、libuser 和 libapplicationframework 等名称来引用 Kanzi 库。对于 i.MX6/INTEGRITY 端口,这些名称被重命名为 libkzsystem、libkzcore、libkzuser 和 libkzapplicationframework,以免与现有的库发生名称冲突。

另请参阅

部署 Kanzi 应用程序

使用 kzb 文件